package com.ty.jpa;

import com.ty.jpa.entity.User;
import com.ty.jpa.repository.UsrRepository;
import jakarta.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;


/**
 * UserRepositoryTester
 *
 * @aurhor Administrator  whs
 * @since 2024/8/28
 */
//@RunWith(SpringRunner.class)
@SpringBootTest
public class UsrRepositoryTester {


    @Resource
    private UsrRepository usrRepository;

    @Test
    public void testGet(){  // 测试按注解查询用户，关联获得角色数据
        User user = usrRepository.findById(2L).get();
        System.out.println("usrName: "+user.getUsrName());
        System.out.println("roleName: "+user.getRole().getRoleName());
    }

//    @Test
//    public void insertUser() {   // 测试新增
//        User user = new User("JPA","123456",1L);
//        usrRepository.save(user);
//    }
//
//    @Test
//    public void testGet(){  // 测试按主键查询
//        User user = usrRepository.findById(2L).get();
//        System.out.println("userName:" + user.getUsrName());
//        System.out.println("usrPassword:" + user.getUsrPassword());
//    }
//
//    @Test
//    public void testFindByUsrNameLike(){ // 测试按照用户名称模糊查询
//        List<User> list = usrRepository.findByUsrNameLike("%s%"); // 查询参数必须带%号
//        if (list != null){
//            for (User user : list ) {
//                System.out.println("userName: " + user.getUsrName());
//            }
//        }
//    }
//
//    @Test
//    public void testFindByRoleId(){ // 自定义QL查询
//        List<User> list = usrRepository.findByRoleId(1L);
//        if (list != null){
//            for (User user : list ) {
//                System.out.println("userName: " + user.getUsrName());
//            }
//        }
//    }
//
//    @Test
//    public void testFindByRoleIdSQL(){ // 使用原生SQL查询
//        List<User> list = usrRepository.findByRoleIdSQL(1L);
//        if (list != null){
//            for (User user : list ) {
//                System.out.println("userName: " + user.getUsrName());
//            }
//        }
//    }
//
//    @Test
//    public void testModifyNameById(){ // 测试修改功能
//        int upd = usrRepository.modifyNameById("阿贡",72L);
//        System.out.println( upd == 1 ? "修改成功！":"修改失败！");
//    }
//
//
//    @Test
//    public void testFindUsersByName(){ // QL命名查询
//        System.out.println(usrRepository.findUsersByName("阿贡"));
//    }
//
//
//    @Test
//    public void testFindPageByUsrRoleId(){ // 测试按角色查询用户并分页
//        int page = 0, size = 2; // 分页要素，页数从0开始
//        // 控制分页数据的排序 可以选择升序或者降序
//        Sort sort = Sort.by(Sort.Direction.DESC, "usrId");
//        // 控制分页的辅助类，主要用于设置页码、每页显示的数据条数和排序等
//        Pageable pageable = PageRequest.of(page, size, sort);
//        Page<User> userPage = usrRepository.findPageByUsrRoleId(1L,pageable);
//
//        System.out.println("总记录数："+userPage.getTotalElements());
//        System.out.println("总页数："+userPage.getTotalPages());
//        System.out.println("当前页数："+userPage.getNumber()+1);
//        System.out.println("每页记录数："+userPage.getSize());
//        System.out.println("当前页记录数："+userPage.getNumberOfElements());
//
//        for (User user : userPage.getContent()){
//            System.out.println("userId :" + user.getUsrId());
//            System.out.println("userName: " + user.getUsrName());
//        }
//
//    }
//
//    @Test
//    public void testFindPageByUsrNameAndUsrRoleId (){ // 复杂查询用户并分页
//        int page = 0, size = 2; // 分页要素，页数从0开始
//        // 控制分页数据的排序 可以选择升序或者降序
//        Sort sort = Sort.by(Sort.Direction.DESC, "usrId");
//        // 控制分页的辅助类，主要用于设置页码、每页显示的数据条数和排序等
//        Pageable pageable = PageRequest.of(page, size, sort);
//
//        Map params = new HashMap();
//
//        params.put("usrId",1L);
//        params.put("usrName","小胖子");
//
//        Page<User> userPage = usrRepository.findPageByUsrNameAndUsrRoleId("小胖子",2L,pageable);
//
//
//        System.out.println("总记录数："+userPage.getTotalElements());
//        System.out.println("总页数："+userPage.getTotalPages());
//        System.out.println("当前页数："+userPage.getNumber());
//        System.out.println("每页记录数："+userPage.getSize());
//        System.out.println("当前页记录数："+userPage.getNumberOfElements());
//
//        for (User user : userPage.getContent()){
//            System.out.println("userId :" + user.getUsrId());
//            System.out.println("userName: " + user.getUsrName());
//        }
//
//    }
//
//    @Test
//    public void testDeleteByUsrId(){ // 删除
//        System.out.println(usrRepository.deleteUserById(52L)  == 1 ? "删除成功！":"删除失败！");
//    }
//
//
//    @Test
//    public void testGetUserInfo(){ // 多表连接查询
//        UserInfo userInfo = usrRepository.getUserInfo(2L);
//        System.out.println("usrName: "+userInfo.getUsrName());
//        System.out.println("roleName: "+userInfo.getRoleName());
//        System.out.println("usrFlag: "+userInfo.getUsrFlag());
//    }




//
//    @Test
//    public void testFindPageByMap (){ // 测试 Map 查询用户并分页
//        int page = 0, size = 2; // 分页要素，页数从0开始
//        // 控制分页数据的排序 可以选择升序或者降序
//        Sort sort = Sort.by(Sort.Direction.DESC, "usrId");
//        // 控制分页的辅助类，主要用于设置页码、每页显示的数据条数和排序等
//        Pageable pageable = PageRequest.of(page, size, sort);
//
//        Map<String,Object> param = new HashMap<>();
//
//        param.put("usrName","小胖子");
//        param.put("usrRoleId",1L);
//
//        System.out.println(param);
//
//        Page<User> userPage = usrRepository.findPageByMap(param,pageable);
//
//
//        System.out.println("总记录数："+userPage.getTotalElements());
//        System.out.println("总页数："+userPage.getTotalPages());
//        System.out.println("当前页数："+userPage.getNumber());
//        System.out.println("每页记录数："+userPage.getSize());
//        System.out.println("当前页记录数："+userPage.getNumberOfElements());
//
//        for (User user : userPage.getContent()){
//            System.out.println(user+"\n");
//        }
//
//    }

}
